package com.sicnu.carrent.serivce.impl;

import com.sicnu.carrent.domain.Cars;
import com.sicnu.carrent.domain.Users;
import com.sicnu.carrent.repository.UsersRepository;
import com.sicnu.carrent.serivce.UsersService;
import com.sicnu.carrent.util.MyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.List;

@Service
public class UsersServiceImpl implements UsersService {

    @Autowired
    private UsersRepository usersRepository;

    //真正去实现用户注册功能
    @Transactional
    @Override
    public Users reg(Users user) {

        //保存之前，把用户的密码进行BCrypt算法加密。
        user.setPassword(MyUtil.encodePasswordByBCrypt(user.getPassword()));

        usersRepository.save(user);

        return usersRepository.getOne(user.getUid());
    }

    @Override
    public Users login(String username, String password) {

        /*
        * 现在登录过程，分两步走。
        *
        * 第一步，先检查有没有对于的用户名。admin,123456
        *
        * 第二不，那原密码和数据库中的加密密码进行匹配，是否成功，如果成功，说明是合法用户。
        * 强调一下，千万不能原始密码进行加密后，和数据库比较，这样肯定不行。
        *
        *
        * */
        Users users = null;
        users = usersRepository.findByUsername(username);
        if(users!=null){
            //再判断原文和密码是否匹配
            if(MyUtil.checkPasswordByBCrypt(password,users.getPassword())){
                //说明用户是合法的。
                return users;
            }else{
                return null;
            }
        }

        return null;
    }

    @Override
    public boolean checkUsernameIsExist(String username) {
        Users u = usersRepository.findByUsername(username);
        if(u==null){
            return true;
        }else{
            return false;
        }

    }


}
